#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
using namespace std;

#include"BinarySearch.h"

//int main()
//{
//	int a[] = { 8, 3, 1, 10, 1, 6, 4, 7, 14, 13 };
//	BSTree<int> t;
//	for (auto e : a)
//	{
//		t.Insert(e);
//	}
//
//	t.InOrder();
//
//	//int x = 0;
//	//while (cin >> x)
//	//{
//	//	if (t.Find(x))
//	//	{
//	//		cout << x << "存在" << endl;
//	//	}
//	//	else
//	//	{
//	//		cout << x << "不存在" << endl;
//	//	}
//	//}
//
//	t.Erase(8);
//	t.InOrder();
//
//	t.Erase(3);
//	t.InOrder();
//
//	t.Erase(14);
//	t.InOrder();
//
//	t.Erase(6);
//	t.InOrder();
//
//	for (auto e : a)
//	{
//		t.Erase(e);
//		t.InOrder();
//	}
//
//	return 0;
//}

//int main()
//{
//	int a[] = { 8, 3, 1, 10, 1, 6, 4, 7, 14, 13 };
//	//BSTree t3;
//	BSTree<int> t1;
//	for (auto e : a)
//	{
//		t1.Insert(e);
//	}
//
//	t1.InOrder();
//
//	BSTree<int> t2(t1);
//	t2.InOrder();
//
//	return 0;
//}

//int main()
//{
//	// 21:06
//	key_value::BSTree<string, string> dict;
//	//BSTree<string, string> copy = dict;
//	dict.Insert("left", "左边");
//	dict.Insert("right", "右边");
//	dict.Insert("insert", "插入");
//	dict.Insert("string", "字符串");
//
//	string str;
//	while (cin >> str)
//	{
//		auto ret = dict.Find(str);
//		if (ret)
//		{
//			cout << "->" << ret->_value << endl;
//		}
//		else
//		{
//			cout << "无此单词，请重新输入" << endl;
//		}
//	}
//
//	return 0;
//}

//int main()
//{
//	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜", "苹果", "香蕉", "苹果", "苹果", "香蕉" };
//	key_value::BSTree<string, int> countTree;
//	for (auto e : arr)
//	{
//		key_value::BSTreeNode<string, int>* ret = countTree.Find(e);
//		if (ret == nullptr)
//		{
//			countTree.Insert(e, 1);
//		}
//		else
//		{
//			ret->_value++;
//		}
//	}
//
//	countTree.InOrder();
//
//	return 0;
//}

#include<set>

int main()
{
	// 去重+升序排序
	//set<int> s;
	// 去重+降序排序（给一个大于的仿函数）
	set<int, greater<int>> s;
	s.insert(5);
	s.insert(2);
	s.insert(7);
	s.insert(5);

	set<int>::iterator it = s.begin();
	while (it != s.end())
	{
		// *it = 5;
		cout << *it << " ";
		++it;
	}
	cout << endl;

	for (auto e : s)
	{
		cout << e << " ";
	}
}